#include <string.h>

/**
* 冒泡排序 (越小的元素会经由交换慢慢“浮”到数列的顶端)
*   第1、2比较,  第2、3比较，  第3、4比较  ...  第9、10比较: 最大值放到了最后面
*   第1、2比较,  第2、3比较，  第3、4比较  ...  第8、9比较: 第2大值放到了倒数第2位
*   ...
 *   @param arr 务必传入数组, sizeof(arr) = 4
 *   @param len 数组有多少个元素
*/
void bubbleSort(int arr[], int len) {
    if(arr == NULL || len <= 1) return;
    int temp;
//    for (int i = 0; i < len - 1; i++) {         //外层执行 len - 1 次. 外层控制行
//        for (int j = 0; j < len - i - 1; j++) { //内层控制列
//            temp = arr[j];
//            if(temp > arr[j + 1]) {
//                arr[j] = arr[j + 1];
//                arr[j + 1] = temp;
//            }
//        }
//    }
    //https://www.bilibili.com/video/BV1vs411n7TH?p=65
    for (int i = 0; i < len - 1; i++) {         //外层执行 len - 1 次. 外层控制行
        for (int j = 0; j < len - i - 1; j++) { //内层控制列
            temp = *(arr + j);
            if(temp > *(arr + j + 1)) {
                *(arr + j) = *(arr + j + 1);
                *(arr + j + 1) = temp;
            }
        }
    }
}